// Ollama API工具类
const ollamaConfig = require('../config/ollama.js');

class OllamaAPI {
  constructor() {
    this.config = ollamaConfig;
  }

  /**
   * 发送消息到Ollama API
   * @param {Array} messages 对话历史
   * @returns {Promise<string>} 回复内容
   */
  async sendMessage(messages) {
    return new Promise((resolve, reject) => {
      // 构建完整的对话内容
      let fullPrompt = this.config.systemPrompt + '\n\n';
      
      // 添加对话历史
      messages.forEach(msg => {
        if (msg.role === 'user') {
          fullPrompt += `用户: ${msg.content}\n`;
        } else if (msg.role === 'assistant') {
          fullPrompt += `助手: ${msg.content}\n`;
        }
      });
      
      fullPrompt += '助手: ';

      // 构建请求参数（Ollama格式）
      const requestData = {
        model: this.config.model,
        prompt: fullPrompt,
        options: {
          temperature: this.config.temperature,
          num_predict: this.config.maxTokens
        },
        stream: false
      };

      console.log('发送到Ollama的请求:', requestData);

      // 发送请求
      wx.request({
        url: `${this.config.baseUrl}/api/generate`,
        method: 'POST',
        timeout: this.config.timeout,
        header: {
          'Content-Type': 'application/json'
        },
        data: requestData,
        success: (res) => {
          console.log('Ollama API响应:', res);
          
          if (res.statusCode === 200 && res.data.response) {
            const response = res.data.response.trim();
            resolve(response);
          } else {
            console.error('Ollama API响应格式错误:', res.data);
            reject(new Error(`API响应错误: ${res.statusCode}`));
          }
        },
        fail: (error) => {
          console.error('Ollama API请求失败:', error);
          reject(error);
        }
      });
    });
  }

  /**
   * 检查API配置是否有效
   * @returns {boolean} 配置是否有效
   */
  isConfigValid() {
    return this.config.baseUrl && 
           this.config.model;
  }

  /**
   * 获取错误回复
   * @param {string} userMessage 用户消息
   * @returns {string} 错误回复
   */
  getErrorResponse(userMessage) {
    const message = userMessage.toLowerCase();
    
    // 问候语处理
    if (message.includes('你好') || message.includes('您好') || message.includes('hi') || message.includes('hello')) {
      return '您好！欢迎来到二手车交易平台！我是您的专属智能客服助手，有什么可以帮助您的吗？\n\n我可以为您提供以下服务：\n• 买车咨询和推荐\n• 卖车流程指导\n• 订单查询服务\n• 车辆评估建议\n• 平台功能介绍\n\n请告诉我您的需求，我会尽力为您提供帮助！';
    } else if (message.includes('买车') || message.includes('购车')) {
      return '您好！我们平台有丰富的二手车资源。您可以通过首页搜索功能查找心仪的车辆，也可以告诉我您的具体需求，我来为您推荐合适的车辆。如需更多帮助，请拨打400-123-4567。';
    } else if (message.includes('卖车') || message.includes('出售')) {
      return '如果您要卖车，可以在"卖车"页面发布车辆信息。我们会为您提供免费的车辆评估服务，帮您制定合理的售价。详细流程请咨询400-123-4567。';
    } else if (message.includes('订单') || message.includes('查询')) {
      return '您可以在"我的"页面查看所有订单信息，包括购车订单和卖车记录。如有具体问题，请提供订单号或拨打400-123-4567咨询。';
    } else if (message.includes('评估') || message.includes('价格')) {
      return '我们提供专业的车辆评估服务。请提供车辆的品牌、型号、年份、里程数等信息，我们的评估师会为您提供准确的市场估价。预约评估请拨打400-123-4567。';
    } else if (message.includes('客服') || message.includes('联系')) {
      return '如需人工客服协助，请拨打400-123-4567，工作时间9:00-18:00。我们的客服人员会为您提供更详细的帮助。';
    } else if (message.includes('谢谢') || message.includes('感谢')) {
      return '不客气！很高兴能为您提供帮助。如果您还有其他问题，随时可以询问我。祝您使用愉快！';
    } else if (message.includes('再见') || message.includes('拜拜') || message.includes('byebye')) {
      return '再见！感谢您使用我们的智能客服服务。如果以后有任何问题，欢迎随时回来咨询。祝您生活愉快！';
    } else {
      return '抱歉，我暂时无法为您提供准确的回答。请拨打客服电话400-123-4567，我们的人工客服会为您详细解答。工作时间：9:00-18:00。';
    }
  }
}

// 创建单例实例
const ollamaAPI = new OllamaAPI();

module.exports = ollamaAPI;
